Copending, commonly assigned U.S. patent applications, such as Petrie et al. U.S. application Ser. No. 08/368,125 which was filed Jan. 3, 1995 on "Characterization of Embedded Data Blocks by Sync Frame Encodings of Distinctive Fixed Length Codes" (D/94914), Hecht U.S. application Ser. No. 08/368,112 which was filed Jan. 3, 1995 on "Extended Address Codes for Distributed Labeling and Unique Addressing of Embedded Data Patterns" (D/94916), and Hecht et al. U.S. application Ser. No. 08/649,749 which was filed May 15, 1996 as a continuation-in-part of U.S. application Ser. No. 08/368,124 filed Jan. 3, 1995 on "Distributed Dimensional Labeling of Embedded Data Blocks" (D/949181). describe a logically addressable explicit spatial synchronization mechanism and an embedded data block structure for self-clocking glyph codes. As used herein, a "self-clocking glyph code" is an embedded data pattern which encodes logically organized binary information in a pattern of individually detectable symbols or "glyphs" which, in turn, are written on a suitable recording medium in accordance with a predetermined spatial formatting rule. Such a code is "self-clocking" because all of the binary information is explicity encoded (typically, at a single bit level) in a recognizable property of the glyphs, such as rotational orientation, shape or color. Accordingly, the detection of the glyphs is sufficient to synchronize a properly oriented read/decode process with the recorded data pattern.
In practice, however, localized damage to self-clocking glyph code patterns or distortion of such data patterns may make it difficult to establish and maintain synchronization between a read/decode process and a given data pattern. In recognition of this, it has been proposed to add one or more subpatterns of synchronization glyphs to the data pattern to provide localized explicit synchronization references for the data pattern in a direction parallel to one or more axes of the data pattern. For example, these subpatterns of synchronization glyphs commonly are laid out in accordance with the same spatial formatting rules that govern the layout of remainder of the embedded data pattern to linearly extend across substantially the full span of the data pattern along the x and/or y axes. A predetermined logical sequence of binary values is encoded in the glyphs of each of these synchronization subpatterns, thereby enabling each of the subpatterns of synchronization glyphs to be recognized by confirming, such as by means of a correlation process, that the logically ordered decode values of the glyphs within these subpatterns are close logical matches to the known logical sequence of binary values that are encoded in the synchronization glyphs. As a general rule, the number of glyphs in a subpattern of synchronization glyphs is sufficiently large to ensure reliable recognition of such a subpattern in the presence of one or perhaps even more logical mismatches, such as might be caused by errors or ambiguities in the interpretation of the individual glyphs or by localized damage to the recorded data pattern.
Advantageously, the functionally distinct glyphs in a self-clocking glyph code (e.g., the synchronization glyphs and the glyphs for encoding variable data--the "data glyphs") are symbolically indistinguishable from each other. For example, such a glyph code commonly is implemented by employing slash-like visible symbols which are tilted from vertical at approximately +45.degree. and -45.degree. to encode binary "0's" and "1's," respectively. The use of such a symbol set for writing the glyphs facilitates the decoding of the code because the symbols that are utilized to encode the different binary values essentially are rotationally orthogonal to each other. However, a self-clocking code pattern that is composed of these slash-like symbols has a generally homogeneous visual appearance. Indeed, as the glyph density increases, the code pattern takes on a generally uniform gray scale appearance.
It sometimes is desirable to be able to uniquely identify interior locations within a self-clocking glyph code pattern. For this reason, it has been proposed to encode logically addressable binary sequences, such as a pseudo-noise sequence (sometimes referred to as a "PN sequence" or simply as a "PNS"), in the spatially ordered synchronization glyphs. As is known, a PN sequence is the ordered set of unique n-bit long subsequences a n-stage shift register generates when it is preloaded with a given seed value and operated with feedback taps at specified register locations. A "maximal length PN sequence" contains 2n-1 of these n-bit long subsequences.
An embedded data block structure for recording variable size self-clocking glyph code patterns in accordance with any one of a number of different geometric styles has been developed to incorporate the above-described features, together with some additional features. A simple rectangular embedded data block that is constructed in accordance with these structural rules is described hereinbelow, so for the moment it merely will be noted that this invention may be applied to such data blocks.
It is necessary or desirable for some applications to be able to capture embedded data from an embedded data pattern, such as glyph code pattern, by bringing a appropriately sized capture window to bear on a more or less randomly selected portion of the data pattern. This capture window may be constructed to capture the selected portion of the data pattern in a single parallel read operation or it may be constructed to capture the selected portion of the data pattern by scanning operation.